// 为了演示在很大的素数上的处理效果，所有整数用long型表示（与教材不同）。
#include <stdio.h>
#include <math.h>
int main(void)
{
    long lN = 0;
    long lX = 0;
    double dUpperBound = 0.0;
    printf("n=?\n");
    scanf("%ld", &lN);
    if (lN <= 3)
    {
        printf("输入的n应该大于3\n");
    }
    else
    {
        dUpperBound = sqrt((double)lN);
        for(lX = 2; (double)lX <= dUpperBound; lX++)
        {
            if ((lN % lX) == 0)
            {
                // lN可以被lX整除，说明lN不是素数
                break; // 提前结束整个循环
            }
        }
        if (!((double)lX <= dUpperBound))
        {
            // 用printf输出long型数时，需要用%ld格式
            printf("%ld is a prime.\n", lN);
        }
        else
        {
            printf("%ld is not a prime.\n", lN);
        }
    }
    return 0;
}
// 可以以大素数（100001651, 997525853，2147483647)测试程序计算性能